home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc Development Framework / ODFDev / ODF / Framewrk / FWPart / Include / FWSOMPrt.h < prev    next >
Encoding:
Text File  |  1996-04-25  |  43.1 KB  |  1,212 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWSOMPrt.h
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #define SOM_Module_sompart_Source
  11.  
  12. //========================================================================================
  13. // Configuration checks
  14. //========================================================================================
  15.  
  16. #ifndef FW_SUPPORTS_EMBEDDING
  17. #error You must define FW_SUPPORTS_EMBEDDING to be 0 or 1
  18. #endif
  19.  
  20. #ifndef FW_SUPPORTS_EXTENSIONS
  21. #error You must define FW_SUPPORTS_EXTENSIONS to be 0 or 1
  22. #endif
  23.  
  24. #ifndef FW_SUPPORTS_SCRIPTING
  25. #error You must define FW_SUPPORTS_SCRIPTING to be 0 or 1
  26. #endif
  27.  
  28. #if !FW_SUPPORTS_EXTENSIONS && FW_SUPPORTS_SCRIPTING
  29. #error Scripting support requires Extensions support!
  30. #endif
  31.  
  32. //========================================================================================
  33. // Includes
  34. //========================================================================================
  35.  
  36. #include "SOMPart.xih"
  37.  
  38. #if FW_SUPPORTS_EMBEDDING
  39. #include "SOMIter.xh"
  40.  
  41. #ifndef FWFRMING_H
  42. #include "FWFrming.h"
  43. #endif
  44.  
  45. #endif
  46.  
  47. #ifndef FWODPART_H
  48. #include "FWODPart.h"
  49. #endif
  50.  
  51. #ifndef FWGRINIT_H
  52. #include "FWGrInit.h"
  53. #endif
  54.  
  55. #ifndef SOM_ODShape_xh
  56. #include <Shape.xh>
  57. #endif
  58.  
  59. #ifndef SOM_Module_OpenDoc_Errors_defined
  60. #include <ErrorDef.h>
  61. #endif
  62.  
  63. //========================================================================================
  64. // Extension macro
  65. //========================================================================================
  66.  
  67. #if FW_SUPPORTS_EXTENSIONS
  68.     #ifndef FWEXTMGR_H
  69.     #include "FWExtMgr.h"
  70.     #endif
  71.     #define FW_CREATE_EXTENSION_MANAGER    part->PrivSetExtensionManager(FW_NEW(FW_CExtensionManager, (part)));
  72.     #define FW_HAS_EXTENSION  \
  73.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  74.         if (manager) result = manager->HasExtension(ev, extensionName);
  75.     #define FW_ACQUIRE_EXTENSION \
  76.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  77.         if (manager) extension = manager->AcquireExtension(ev, extensionName, FW_kCreateExtension);
  78.     #define FW_RELEASE_EXTENSION \
  79.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  80.         if (manager) released = manager->ReleaseExtension(ev, extension);
  81.     #define FW_ABANDON_EXTENSIONS \
  82.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  83.         if (manager) manager->AbandonExtensions(ev);
  84.     #define FW_PURGE_EXTENSIONS \
  85.         FW_CExtensionManager *manager = somSelf->GetFrameworkPart(ev)->GetExtensionManager(ev); \
  86.         if (manager) manager->PurgeCachedExtensions(ev);
  87.     #define FW_DELETE_EXTENSION_MANAGER \
  88.         FW_CExtensionManager *manager = part->GetExtensionManager(ev); \
  89.         delete manager;
  90. #else
  91.     #define FW_CREATE_EXTENSION_MANAGER
  92.     #define FW_HAS_EXTENSION
  93.     #define FW_ACQUIRE_EXTENSION
  94.     #define FW_RELEASE_EXTENSION
  95.     #define FW_ABANDON_EXTENSIONS
  96.     #define FW_PURGE_EXTENSIONS
  97.     #define FW_DELETE_EXTENSION_MANAGER
  98. #endif
  99.  
  100. //========================================================================================
  101. // Semantic Interface macro
  102. //========================================================================================
  103.  
  104. #if FW_SUPPORTS_SCRIPTING
  105.     #ifndef FWSEMINT_H
  106.     #include "FWSemInt.h"
  107.     #endif
  108.     #ifndef FWPRTSCP_H
  109.     #include "FWPrtScp.h"
  110.     #endif
  111.     #ifndef FW_SEMANTIC_INTERFACE_CLASS
  112.         #define FW_SEMANTIC_INTERFACE_CLASS FW_CSemanticInterface
  113.     #endif
  114.     #define FW_CREATE_SEMANTIC_INTERFACE \
  115.         FW_SEMANTIC_INTERFACE_CLASS* semInt = FW_NEW(FW_SEMANTIC_INTERFACE_CLASS,(ev, part)); \
  116.         semInt->RegisterCallbacks(ev); \
  117.         part->PrivSetSemanticInterface(semInt); \
  118.         part->GetExtensionManager(ev)->RegisterExtension(ev, kODExtSemanticInterface, FW_CSemanticInterface::PrivCreate, NULL, FW_kCacheWhenReleased);
  119.     #define FW_EMBEDDED_FRAME_SPEC \
  120.         FW_MPartScriptable::EmbeddedFrameSpecGlue(ev, somSelf->GetFrameworkPart(ev), embeddedFrame, spec);
  121. #else
  122.     #define FW_CREATE_SEMANTIC_INTERFACE
  123.     #define FW_EMBEDDED_FRAME_SPEC \
  124.         FW_SetEvError(ev, kODErrCannotEmbed);
  125. #endif
  126.  
  127. //========================================================================================
  128. // FW_SOMPART macro
  129. //========================================================================================
  130.  
  131. #define FW_SOMPART(ModuleName, PartName, PartClass) \
  132.     FW_LEAF_PART_API(ModuleName, PartName, PartClass) \
  133.     FW_CONTAINER_PART_API(ModuleName, PartName, PartClass)
  134.     
  135. //========================================================================================
  136. // FW_LEAF_API macro
  137. //========================================================================================
  138.  
  139. #define FW_LEAF_PART_API(ModuleName, PartName, PartClass) \
  140. \
  141. /*======================================================================================== \
  142.  PartName \
  143. ========================================================================================*/\
  144.  \
  145. /*---------------------------------------------------------------------------------------- \
  146.     GetFrameworkPart \
  147. ----------------------------------------------------------------------------------------*/ \
  148.  \
  149. SOM_Scope FW_CPart* SOMLINK PartName##GetFrameworkPart(ModuleName##_##PartName *somSelf, Environment *ev) \
  150. { \
  151.       ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  152.  \
  153.     return somThis->fFrameworkPart; \
  154. } \
  155.  \
  156. /*---------------------------------------------------------------------------------------- \
  157.     NewFrameworkPart \
  158. ----------------------------------------------------------------------------------------*/ \
  159.  \
  160. SOM_Scope FW_CPart*  SOMLINK PartName##NewFrameworkPart(ModuleName##_##PartName *somSelf, Environment *ev, \
  161.         ODPart* partWrapper) \
  162. { \
  163.     FW_PrivInitGraphics(); \
  164.     PartClass* part = FW_NEW(PartClass, (partWrapper)); \
  165.     FW_CREATE_EXTENSION_MANAGER \
  166.     FW_CREATE_SEMANTIC_INTERFACE \
  167.     return part; \
  168. } \
  169.  \
  170. /*---------------------------------------------------------------------------------------- \
  171.     somInit \
  172. ----------------------------------------------------------------------------------------*/ \
  173.  \
  174. SOM_Scope void  SOMLINK PartName##somInit(ModuleName##_##PartName *somSelf) \
  175. { \
  176.     ModuleName##_##PartName##_parent_ODPart_somInit(somSelf); \
  177. } \
  178.  \
  179. /*---------------------------------------------------------------------------------------- \
  180.     somUninit \
  181. ----------------------------------------------------------------------------------------*/ \
  182.  \
  183. SOM_Scope void  SOMLINK PartName##somUninit(ModuleName##_##PartName *somSelf) \
  184. { \
  185.     FW_TRY \
  186.     { \
  187.         FW_SOMEnvironment ev; \
  188.         if (somSelf->GetFrameworkPart(ev)) \
  189.         { \
  190.             FW_CPart *part = somSelf->GetFrameworkPart(ev); \
  191.             FW_DELETE_EXTENSION_MANAGER \
  192.             delete part; \
  193.         } \
  194.              \
  195.         ModuleName##_##PartName##_parent_ODPart_somUninit(somSelf); \
  196.     } \
  197.     FW_CATCH_BEGIN \
  198.     FW_CATCH_EVERYTHING() \
  199.     { \
  200.     } \
  201.     FW_CATCH_END\
  202. } \
  203.  \
  204. /*---------------------------------------------------------------------------------------- \
  205.     FulfillPromise \
  206. ----------------------------------------------------------------------------------------*/ \
  207.  \
  208. SOM_Scope void  SOMLINK PartName##FulfillPromise(ModuleName##_##PartName *somSelf, Environment *ev, \
  209.         ODStorageUnitView* promiseSUView) \
  210. { \
  211.     FW_CODPart::FulfillPromise(ev, somSelf->GetFrameworkPart(ev), promiseSUView); \
  212. } \
  213.  \
  214. /*---------------------------------------------------------------------------------------- \
  215.     DragEnter \
  216. ----------------------------------------------------------------------------------------*/ \
  217.  \
  218. SOM_Scope ODDragResult  SOMLINK PartName##DragEnter(ModuleName##_##PartName *somSelf, Environment *ev, \
  219.         ODDragItemIterator* dragInfo, \
  220.         ODFacet* facet, \
  221.         ODPoint* where) \
  222. { \
  223.     return FW_CODPart::DragEnter(ev, dragInfo, facet, *where); \
  224. } \
  225.  \
  226. /*---------------------------------------------------------------------------------------- \
  227.     DragWithin \
  228. ----------------------------------------------------------------------------------------*/ \
  229.  \
  230. SOM_Scope ODDragResult  SOMLINK PartName##DragWithin(ModuleName##_##PartName *somSelf, Environment *ev, \
  231.         ODDragItemIterator* dragInfo, \
  232.         ODFacet* facet, \
  233.         ODPoint* where) \
  234. { \
  235.     return FW_CODPart::DragWithin(ev, dragInfo, facet, *where); \
  236. } \
  237.  \
  238. /*---------------------------------------------------------------------------------------- \
  239.     DragLeave \
  240. ----------------------------------------------------------------------------------------*/ \
  241.  \
  242. SOM_Scope void  SOMLINK PartName##DragLeave(ModuleName##_##PartName *somSelf, Environment *ev, \
  243.         ODFacet* facet, \
  244.         ODPoint* where) \
  245. { \
  246.     FW_CODPart::DragLeave(ev, facet, *where); \
  247. } \
  248.  \
  249. /*---------------------------------------------------------------------------------------- \
  250.     Drop \
  251. ----------------------------------------------------------------------------------------*/ \
  252.  \
  253. SOM_Scope ODDropResult  SOMLINK PartName##Drop(ModuleName##_##PartName *somSelf, Environment *ev, \
  254.         ODDragItemIterator* dropInfo, \
  255.         ODFacet* facet, \
  256.         ODPoint* where) \
  257. { \
  258.     return FW_CODPart::Drop(ev, dropInfo, facet, *where); \
  259. } \
  260.  \
  261. /*---------------------------------------------------------------------------------------- \
  262.     DropCompleted \
  263. ----------------------------------------------------------------------------------------*/ \
  264.  \
  265. SOM_Scope void  SOMLINK PartName##DropCompleted(ModuleName##_##PartName *somSelf, Environment *ev, \
  266.         ODPart* destPart, \
  267.         ODDropResult dropResult) \
  268. { \
  269.     FW_CODPart::DropCompleted(ev, destPart, dropResult); \
  270. } \
  271.  \
  272. /*---------------------------------------------------------------------------------------- \
  273.     ContainingPartPropertiesUpdated \
  274. ----------------------------------------------------------------------------------------*/ \
  275.  \
  276. SOM_Scope void  SOMLINK PartName##ContainingPartPropertiesUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  277.         ODFrame* frame, \
  278.         ODStorageUnit* propertyUnit) \
  279. { \
  280.     FW_CODPart::ContainingPartPropertiesUpdated(ev, frame, propertyUnit); \
  281. } \
  282.  \
  283. /*---------------------------------------------------------------------------------------- \
  284.     AcquireContainingPartProperties \
  285. ----------------------------------------------------------------------------------------*/ \
  286.  \
  287. SOM_Scope ODStorageUnit*  SOMLINK PartName##AcquireContainingPartProperties(ModuleName##_##PartName *somSelf, Environment *ev, \
  288.         ODFrame* frame) \
  289. { \
  290.     return FW_CODPart::AcquireContainingPartProperties(ev, frame); \
  291. } \
  292.  \
  293. /*---------------------------------------------------------------------------------------- \
  294.     EmbeddedFrameSpec \
  295. ----------------------------------------------------------------------------------------*/ \
  296.  \
  297. SOM_Scope void  SOMLINK PartName##EmbeddedFrameSpec(ModuleName##_##PartName *somSelf, Environment *ev, \
  298.         ODFrame* embeddedFrame, \
  299.         ODObjectSpec* spec) \
  300. { \
  301.     FW_EMBEDDED_FRAME_SPEC \
  302. } \
  303.  \
  304. /*---------------------------------------------------------------------------------------- \
  305.     DisplayFrameAdded \
  306. ----------------------------------------------------------------------------------------*/ \
  307.  \
  308. SOM_Scope void  SOMLINK PartName##DisplayFrameAdded(ModuleName##_##PartName *somSelf, Environment *ev, \
  309.         ODFrame* odFrame) \
  310. { \
  311.     FW_CODPart::DisplayFrameAdded(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  312. } \
  313.  \
  314. /*---------------------------------------------------------------------------------------- \
  315.     AttachSourceFrame \
  316. ----------------------------------------------------------------------------------------*/ \
  317.  \
  318. SOM_Scope void  SOMLINK PartName##AttachSourceFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  319.         ODFrame* odFrame, \
  320.         ODFrame* odSourceFrame) \
  321. { \
  322.     FW_CODPart::AttachSourceFrame(ev, odFrame, odSourceFrame); \
  323. } \
  324.  \
  325. /*---------------------------------------------------------------------------------------- \
  326.     DisplayFrameRemoved \
  327. ----------------------------------------------------------------------------------------*/ \
  328.  \
  329. SOM_Scope void  SOMLINK PartName##DisplayFrameRemoved(ModuleName##_##PartName *somSelf, Environment *ev, \
  330.         ODFrame* odFrame) \
  331. { \
  332.     FW_CODPart::DisplayFrameRemoved(ev, odFrame); \
  333. } \
  334.  \
  335. /*---------------------------------------------------------------------------------------- \
  336.     DisplayFrameConnected \
  337. ----------------------------------------------------------------------------------------*/ \
  338.  \
  339. SOM_Scope void  SOMLINK PartName##DisplayFrameConnected(ModuleName##_##PartName *somSelf, Environment *ev, \
  340.         ODFrame* odFrame) \
  341. { \
  342.     FW_CODPart::DisplayFrameConnected(ev, odFrame); \
  343. } \
  344.  \
  345. /*---------------------------------------------------------------------------------------- \
  346.     DisplayFrameClosed \
  347. ----------------------------------------------------------------------------------------*/ \
  348.  \
  349. SOM_Scope void  SOMLINK PartName##DisplayFrameClosed(ModuleName##_##PartName *somSelf, Environment *ev, \
  350.         ODFrame* odFrame) \
  351. { \
  352.     FW_CODPart::DisplayFrameClosed(ev, odFrame); \
  353. } \
  354.  \
  355. /*---------------------------------------------------------------------------------------- \
  356.     FrameShapeChanged \
  357. ----------------------------------------------------------------------------------------*/ \
  358.  \
  359. SOM_Scope void  SOMLINK PartName##FrameShapeChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  360.         ODFrame* frame) \
  361. { \
  362.     FW_CODPart::FrameShapeChanged(ev, frame); \
  363. } \
  364.  \
  365. /*---------------------------------------------------------------------------------------- \
  366.     ViewTypeChanged \
  367. ----------------------------------------------------------------------------------------*/ \
  368.  \
  369. SOM_Scope void  SOMLINK PartName##ViewTypeChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  370.         ODFrame* frame) \
  371. { \
  372.     FW_CODPart::ViewTypeChanged(ev, frame); \
  373. } \
  374.  \
  375. /*---------------------------------------------------------------------------------------- \
  376.     PresentationChanged \
  377. ----------------------------------------------------------------------------------------*/ \
  378.  \
  379. SOM_Scope void  SOMLINK PartName##PresentationChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  380.         ODFrame* frame) \
  381. { \
  382.     FW_CODPart::PresentationChanged(ev, frame); \
  383. } \
  384.  \
  385. /*---------------------------------------------------------------------------------------- \
  386.     SequenceChanged \
  387. ----------------------------------------------------------------------------------------*/ \
  388.  \
  389. SOM_Scope void  SOMLINK PartName##SequenceChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  390.         ODFrame* frame) \
  391. { \
  392.     FW_CODPart::SequenceChanged(ev, frame); \
  393. } \
  394.  \
  395. /*---------------------------------------------------------------------------------------- \
  396.     WritePartInfo \
  397. ----------------------------------------------------------------------------------------*/ \
  398.  \
  399. SOM_Scope void  SOMLINK PartName##WritePartInfo(ModuleName##_##PartName *somSelf, Environment *ev, \
  400.         ODInfoType partInfo, \
  401.         ODStorageUnitView* storageUnitView) \
  402. { \
  403.     FW_CODPart::WritePartInfo(ev, partInfo, storageUnitView); \
  404. } \
  405.  \
  406. /*---------------------------------------------------------------------------------------- \
  407.     ReadPartInfo \
  408. ----------------------------------------------------------------------------------------*/ \
  409.  \
  410. SOM_Scope ODInfoType  SOMLINK PartName##ReadPartInfo(ModuleName##_##PartName *somSelf, Environment *ev, \
  411.         ODFrame* odFrame, \
  412.         ODStorageUnitView* storageUnitView) \
  413. { \
  414.     return FW_CODPart::ReadPartInfo(ev, somSelf->GetFrameworkPart(ev), odFrame, storageUnitView); \
  415. } \
  416.  \
  417. /*---------------------------------------------------------------------------------------- \
  418.     ClonePartInfo \
  419. ----------------------------------------------------------------------------------------*/ \
  420.  \
  421. SOM_Scope void  SOMLINK PartName##ClonePartInfo(ModuleName##_##PartName *somSelf, Environment *ev, \
  422.         ODDraftKey key, \
  423.         ODInfoType partInfo, \
  424.         ODStorageUnitView* storageUnitView, \
  425.         ODFrame* scope) \
  426. { \
  427.     FW_CODPart::ClonePartInfo(ev, \
  428.                                 key, \
  429.                                 partInfo, \
  430.                                 storageUnitView, \
  431.                                 scope); \
  432. } \
  433.  \
  434. /*---------------------------------------------------------------------------------------- \
  435.     Open \
  436. ----------------------------------------------------------------------------------------*/ \
  437.  \
  438. SOM_Scope ODID  SOMLINK PartName##Open(ModuleName##_##PartName *somSelf, Environment *ev, \
  439.         ODFrame* odFrame) \
  440. { \
  441.     return FW_CODPart::Open(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  442. } \
  443.  \
  444. /*---------------------------------------------------------------------------------------- \
  445.     FacetAdded \
  446. ----------------------------------------------------------------------------------------*/ \
  447.  \
  448. SOM_Scope void  SOMLINK PartName##FacetAdded(ModuleName##_##PartName *somSelf, Environment *ev, \
  449.         ODFacet* facet) \
  450. { \
  451.     FW_CODPart::FacetAdded(ev, facet); \
  452. } \
  453.  \
  454. /*---------------------------------------------------------------------------------------- \
  455.     FacetRemoved \
  456. ----------------------------------------------------------------------------------------*/ \
  457.  \
  458. SOM_Scope void  SOMLINK PartName##FacetRemoved(ModuleName##_##PartName *somSelf, Environment *ev, \
  459.         ODFacet* facet) \
  460. { \
  461.     FW_CODPart::FacetRemoved(ev, facet); \
  462. } \
  463.  \
  464. /*---------------------------------------------------------------------------------------- \
  465.     CanvasChanged \
  466. ----------------------------------------------------------------------------------------*/ \
  467.  \
  468. SOM_Scope void  SOMLINK PartName##CanvasChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  469.         ODFacet* facet) \
  470. { \
  471.     FW_CODPart::CanvasChanged(ev, facet); \
  472. } \
  473.  \
  474. /*---------------------------------------------------------------------------------------- \
  475.     GeometryChanged \
  476. ----------------------------------------------------------------------------------------*/ \
  477.  \
  478. SOM_Scope void  SOMLINK PartName##GeometryChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  479.         ODFacet* facet, \
  480.         ODBoolean clipShapeChanged, \
  481.         ODBoolean externalTransformChanged) \
  482. { \
  483.     FW_CODPart::GeometryChanged(ev, facet, clipShapeChanged, externalTransformChanged); \
  484. } \
  485.  \
  486. /*---------------------------------------------------------------------------------------- \
  487.     Draw \
  488. ----------------------------------------------------------------------------------------*/ \
  489.  \
  490. SOM_Scope void  SOMLINK PartName##Draw(ModuleName##_##PartName *somSelf, Environment *ev, \
  491.         ODFacet* facet, \
  492.         ODShape* invalidShape) \
  493. { \
  494.     FW_CODPart::Draw(ev, facet, invalidShape); \
  495. } \
  496.  \
  497. /*---------------------------------------------------------------------------------------- \
  498.     CanvasUpdated \
  499. ----------------------------------------------------------------------------------------*/ \
  500.  \
  501. SOM_Scope void  SOMLINK PartName##CanvasUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  502.         ODCanvas* canvas) \
  503. { \
  504.     FW_CODPart::CanvasUpdated(ev,canvas); \
  505. } \
  506.  \
  507. /*---------------------------------------------------------------------------------------- \
  508.     HighlightChanged \
  509. ----------------------------------------------------------------------------------------*/ \
  510.  \
  511. SOM_Scope void  SOMLINK PartName##HighlightChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  512.         ODFacet* facet) \
  513. { \
  514.     FW_CODPart::HighlightChanged(ev,facet); \
  515. } \
  516.  \
  517. /*---------------------------------------------------------------------------------------- \
  518.     GetPrintResolution \
  519. ----------------------------------------------------------------------------------------*/ \
  520.  \
  521. SOM_Scope ODULong  SOMLINK PartName##GetPrintResolution(ModuleName##_##PartName *somSelf, Environment *ev, \
  522.         ODFrame* frame) \
  523. { \
  524.     return FW_CODPart::GetPrintResolution(ev,frame); \
  525. } \
  526.  \
  527. /*---------------------------------------------------------------------------------------- \
  528.     CreateLink \
  529. ----------------------------------------------------------------------------------------*/ \
  530.  \
  531. SOM_Scope ODLinkSource*  SOMLINK PartName##CreateLink(ModuleName##_##PartName *somSelf, Environment *ev, \
  532.         ODByteArray* data) \
  533. { \
  534.     return FW_CODPart::CreateLink(ev, somSelf->GetFrameworkPart(ev), data); \
  535. } \
  536.  \
  537. /*---------------------------------------------------------------------------------------- \
  538.     LinkUpdated \
  539. ----------------------------------------------------------------------------------------*/ \
  540.  \
  541. SOM_Scope void  SOMLINK PartName##LinkUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  542.         ODLink* updatedLink, \
  543.         ODUpdateID updateID) \
  544. { \
  545.     FW_CODPart::LinkUpdated(ev, somSelf->GetFrameworkPart(ev), updatedLink, updateID); \
  546. } \
  547.  \
  548. /*---------------------------------------------------------------------------------------- \
  549.     RevealLink
  550. ----------------------------------------------------------------------------------------*/ \
  551.  \
  552. SOM_Scope void  SOMLINK PartName##RevealLink(ModuleName##_##PartName *somSelf, Environment *ev, \
  553.         ODLinkSource* linkSource) \
  554. { \
  555.     FW_CODPart::RevealLink(ev, somSelf->GetFrameworkPart(ev), linkSource); \
  556. } \
  557.  \
  558. /*---------------------------------------------------------------------------------------- \
  559.     EditInLinkAttempted \
  560. ----------------------------------------------------------------------------------------*/ \
  561.  \
  562. SOM_Scope ODBoolean  SOMLINK PartName##EditInLinkAttempted(ModuleName##_##PartName *somSelf, Environment *ev, \
  563.         ODFrame* frame) \
  564. { \
  565.     return FW_CODPart::EditInLinkAttempted(ev, somSelf->GetFrameworkPart(ev), frame); \
  566. } \
  567.  \
  568. /*---------------------------------------------------------------------------------------- \
  569.     LinkStatusChanged \
  570. ----------------------------------------------------------------------------------------*/ \
  571.  \
  572. SOM_Scope void  SOMLINK PartName##LinkStatusChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  573.         ODFrame* frame) \
  574. { \
  575.     FW_CODPart::LinkStatusChanged(ev, somSelf->GetFrameworkPart(ev), frame); \
  576. } \
  577.  \
  578. /*---------------------------------------------------------------------------------------- \
  579.     BeginRelinquishFocus \
  580. ----------------------------------------------------------------------------------------*/ \
  581.  \
  582. SOM_Scope ODBoolean  SOMLINK PartName##BeginRelinquishFocus(ModuleName##_##PartName *somSelf, Environment *ev, \
  583.         ODTypeToken focus, \
  584.         ODFrame* ownerFrame, \
  585.         ODFrame* proposedFrame) \
  586. { \
  587.     return FW_CODPart::BeginRelinquishFocus(ev, \
  588.                                             somSelf->GetFrameworkPart(ev),  \
  589.                                             focus, \
  590.                                             ownerFrame, \
  591.                                             proposedFrame); \
  592. } \
  593.  \
  594. /*---------------------------------------------------------------------------------------- \
  595.     CommitRelinquishFocus \
  596. ----------------------------------------------------------------------------------------*/ \
  597.  \
  598. SOM_Scope void  SOMLINK PartName##CommitRelinquishFocus(ModuleName##_##PartName *somSelf, Environment *ev, \
  599.         ODTypeToken focus, \
  600.         ODFrame* ownerFrame, \
  601.         ODFrame* proposedFrame) \
  602. { \
  603.     FW_CODPart::CommitRelinquishFocus(ev,  \
  604.                                         focus, \
  605.                                         ownerFrame, \
  606.                                         proposedFrame); \
  607. } \
  608.  \
  609. /*---------------------------------------------------------------------------------------- \
  610.     AbortRelinquishFocus \
  611. ----------------------------------------------------------------------------------------*/ \
  612. \
  613. SOM_Scope void  SOMLINK PartName##AbortRelinquishFocus(ModuleName##_##PartName *somSelf, Environment *ev, \
  614.         ODTypeToken focus, \
  615.         ODFrame* ownerFrame, \
  616.         ODFrame* proposedFrame) \
  617. { \
  618.     FW_CODPart::AbortRelinquishFocus(ev,focus,ownerFrame,proposedFrame); \
  619. } \
  620.  \
  621. /*---------------------------------------------------------------------------------------- \
  622.     FocusAcquired \
  623. ----------------------------------------------------------------------------------------*/ \
  624.  \
  625. SOM_Scope void  SOMLINK PartName##FocusAcquired(ModuleName##_##PartName *somSelf, Environment *ev, \
  626.         ODTypeToken focus, \
  627.         ODFrame* ownerFrame) \
  628. { \
  629.     FW_CODPart::FocusAcquired(ev, focus, ownerFrame); \
  630. } \
  631.  \
  632. /*---------------------------------------------------------------------------------------- \
  633.     FocusLost \
  634. ----------------------------------------------------------------------------------------*/ \
  635.  \
  636. SOM_Scope void  SOMLINK PartName##FocusLost(ModuleName##_##PartName *somSelf, Environment *ev, \
  637.         ODTypeToken focus, \
  638.         ODFrame* ownerFrame) \
  639. { \
  640.     FW_CODPart::FocusLost(ev, focus, ownerFrame); \
  641. } \
  642.  \
  643. /*---------------------------------------------------------------------------------------- \
  644.     CloneInto \
  645. ----------------------------------------------------------------------------------------*/ \
  646.  \
  647. SOM_Scope void  SOMLINK PartName##CloneInto(ModuleName##_##PartName *somSelf, Environment *ev, \
  648.         ODDraftKey key, \
  649.         ODStorageUnit* toSU, \
  650.         ODFrame* scope) \
  651. { \
  652.     FW_TRY \
  653.     { \
  654.         ModuleName##_##PartName##_parent_ODPart_CloneInto(somSelf,ev, key, toSU, scope);     \
  655.         FW_CODPart::CloneInto(ev, somSelf->GetFrameworkPart(ev), key, toSU, scope); \
  656.     } \
  657.     FW_CATCH_BEGIN \
  658.     FW_CATCH_REFERENCE(FW_XException, exception) \
  659.     { \
  660.         FW_SetException(ev, exception); \
  661.     } \
  662.     FW_CATCH_END\
  663. } \
  664.  \
  665. /*---------------------------------------------------------------------------------------- \
  666.     ExternalizeKinds \
  667. ----------------------------------------------------------------------------------------*/ \
  668.  \
  669. SOM_Scope void  SOMLINK PartName##ExternalizeKinds(ModuleName##_##PartName *somSelf, Environment *ev, \
  670.         ODTypeList* kindset) \
  671. { \
  672.     FW_CODPart::ExternalizeKinds(ev, kindset); \
  673. } \
  674.  \
  675. /*---------------------------------------------------------------------------------------- \
  676.     ChangeKind \
  677. ----------------------------------------------------------------------------------------*/ \
  678.  \
  679. SOM_Scope void  SOMLINK PartName##ChangeKind(ModuleName##_##PartName *somSelf, Environment *ev, \
  680.         ODType kind) \
  681. { \
  682.     FW_CODPart::ChangeKind(ev,kind); \
  683. } \
  684.  \
  685. /*---------------------------------------------------------------------------------------- \
  686.     HandleEvent \
  687. ----------------------------------------------------------------------------------------*/ \
  688.  \
  689. SOM_Scope ODBoolean  SOMLINK PartName##HandleEvent(ModuleName##_##PartName *somSelf, Environment *ev, \
  690.         ODEventData* event, \
  691.         ODFrame* frame, \
  692.         ODFacet* facet, \
  693.         ODEventInfo* eventInfo) \
  694. { \
  695.     return FW_CODPart::HandleEvent(ev, somSelf->GetFrameworkPart(ev), event, frame, facet, eventInfo); \
  696. } \
  697.  \
  698. /*---------------------------------------------------------------------------------------- \
  699.     AdjustMenus \
  700. ----------------------------------------------------------------------------------------*/ \
  701.  \
  702. SOM_Scope void  SOMLINK PartName##AdjustMenus(ModuleName##_##PartName *somSelf, Environment *ev, \
  703.         ODFrame* odFrame) \
  704. { \
  705.     FW_CODPart::AdjustMenus(ev, somSelf->GetFrameworkPart(ev), odFrame); \
  706. } \
  707.  \
  708. /*---------------------------------------------------------------------------------------- \
  709.     UndoAction \
  710. ----------------------------------------------------------------------------------------*/ \
  711.  \
  712. SOM_Scope void  SOMLINK PartName##UndoAction(ModuleName##_##PartName *somSelf, Environment *ev, \
  713.         ODActionData* actionState) \
  714. { \
  715.     FW_CODPart::UndoAction(ev, somSelf->GetFrameworkPart(ev), actionState); \
  716. } \
  717.  \
  718. /*---------------------------------------------------------------------------------------- \
  719.     RedoAction \
  720. ----------------------------------------------------------------------------------------*/ \
  721.  \
  722. SOM_Scope void  SOMLINK PartName##RedoAction(ModuleName##_##PartName *somSelf, Environment *ev, \
  723.         ODActionData* actionState) \
  724. { \
  725.     FW_CODPart::RedoAction(ev, actionState); \
  726. } \
  727.  \
  728. /*---------------------------------------------------------------------------------------- \
  729.     DisposeActionState \
  730. ----------------------------------------------------------------------------------------*/ \
  731.  \
  732. SOM_Scope void  SOMLINK PartName##DisposeActionState(ModuleName##_##PartName *somSelf, Environment *ev, \
  733.         ODActionData* actionState, \
  734.         ODDoneState doneState) \
  735. { \
  736.     FW_CODPart::DisposeActionState(ev, actionState, doneState); \
  737. } \
  738.  \
  739. /*---------------------------------------------------------------------------------------- \
  740.     WriteActionState \
  741. ----------------------------------------------------------------------------------------*/ \
  742.  \
  743. SOM_Scope void  SOMLINK PartName##WriteActionState(ModuleName##_##PartName *somSelf, Environment *ev, \
  744.         ODActionData* actionState, \
  745.         ODStorageUnitView* storageUnitView) \
  746. { \
  747.     FW_CODPart::WriteActionState(ev, actionState, storageUnitView); \
  748. } \
  749.  \
  750. /*---------------------------------------------------------------------------------------- \
  751.     ReadActionState \
  752. ----------------------------------------------------------------------------------------*/ \
  753.  \
  754. SOM_Scope ODActionData  SOMLINK PartName##ReadActionState(ModuleName##_##PartName *somSelf, Environment *ev, \
  755.         ODStorageUnitView* storageUnitView) \
  756. { \
  757.     ODActionData actionData; \
  758.     actionData._maximum = 0; \
  759.     actionData._length = 0; \
  760.     actionData._buffer = NULL; \
  761.      \
  762.     FW_CODPart::ReadActionState(ev, storageUnitView, &actionData); \
  763.      \
  764.     return actionData; \
  765. } \
  766.  \
  767. /*---------------------------------------------------------------------------------------- \
  768.     InitPart \
  769. ----------------------------------------------------------------------------------------*/ \
  770.  \
  771. SOM_Scope void  SOMLINK PartName##InitPart(ModuleName##_##PartName *somSelf, Environment *ev, \
  772.         ODStorageUnit* storageUnit, \
  773.         ODPart* partWrapper) \
  774. { \
  775.     ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  776.  \
  777.      FW_TRY \
  778.      { \
  779.         ModuleName##_##PartName##_parent_ODPart_InitPart(somSelf, ev, storageUnit, partWrapper); \
  780.         somThis->fFrameworkPart = somSelf->NewFrameworkPart(ev, partWrapper);         \
  781.          \
  782.         FW_CODPart::InitPart(ev, somThis->fFrameworkPart, storageUnit); \
  783.     } \
  784.     FW_CATCH_BEGIN \
  785.     FW_CATCH_REFERENCE(FW_XException, exception) \
  786.     { \
  787.         FW_SetException(ev, exception); \
  788.     } \
  789.     FW_CATCH_END \
  790. } \
  791.  \
  792. /*---------------------------------------------------------------------------------------- \
  793.     InitPartFromStorage \
  794. ----------------------------------------------------------------------------------------*/ \
  795.  \
  796. SOM_Scope void  SOMLINK PartName##InitPartFromStorage(ModuleName##_##PartName *somSelf, Environment *ev, \
  797.         ODStorageUnit* storageUnit, \
  798.         ODPart* partWrapper) \
  799. { \
  800.     ModuleName##_##PartName##Data *somThis = ModuleName##_##PartName##GetData(somSelf); \
  801.  \
  802.      FW_TRY \
  803.      { \
  804.         ModuleName##_##PartName##_parent_ODPart_InitPartFromStorage(somSelf, ev, storageUnit, partWrapper); \
  805.         somThis->fFrameworkPart = somSelf->NewFrameworkPart(ev, partWrapper);     \
  806.      \
  807.         FW_CODPart::InitPartFromStorage(ev, somThis->fFrameworkPart, storageUnit); \
  808.     } \
  809.     FW_CATCH_BEGIN \
  810.     FW_CATCH_REFERENCE(FW_XException, exception) \
  811.     { \
  812.         FW_SetException(ev, exception); \
  813.     } \
  814.     FW_CATCH_END \
  815. } \
  816.  \
  817. /*---------------------------------------------------------------------------------------- \
  818.     Externalize \
  819. ----------------------------------------------------------------------------------------*/ \
  820.  \
  821. SOM_Scope void  SOMLINK PartName##Externalize(ModuleName##_##PartName *somSelf, Environment *ev) \
  822. { \
  823.     FW_TRY \
  824.     { \
  825.         ModuleName##_##PartName##_parent_ODPart_Externalize(somSelf,ev); \
  826.          \
  827.         FW_CODPart::Externalize(ev, somSelf->GetFrameworkPart(ev)); \
  828.     } \
  829.     FW_CATCH_BEGIN \
  830.     FW_CATCH_REFERENCE(FW_XException, exception) \
  831.     { \
  832.         FW_SetException(ev, exception); \
  833.     } \
  834.     FW_CATCH_END \
  835. } \
  836.  \
  837. /*---------------------------------------------------------------------------------------- \
  838.     Release \
  839. ----------------------------------------------------------------------------------------*/ \
  840.  \
  841. SOM_Scope void  SOMLINK PartName##Release(ModuleName##_##PartName *somSelf, Environment *ev) \
  842. { \
  843.     FW_TRY \
  844.     { \
  845.         ModuleName##_##PartName##_parent_ODPart_Release(somSelf,ev); \
  846.         FW_CODPart::Release(ev, somSelf->GetFrameworkPart(ev)); \
  847.     } \
  848.     FW_CATCH_BEGIN \
  849.     FW_CATCH_REFERENCE(FW_XException, exception) \
  850.     { \
  851.         FW_SetException(ev, exception); \
  852.     } \
  853.     FW_CATCH_END \
  854. } \
  855.  \
  856. /*---------------------------------------------------------------------------------------- \
  857.     ReleaseAll \
  858. ----------------------------------------------------------------------------------------*/ \
  859.  \
  860. SOM_Scope void  SOMLINK PartName##ReleaseAll(ModuleName##_##PartName *somSelf, Environment *ev) \
  861. { \
  862.     FW_TRY \
  863.     { \
  864.         ModuleName##_##PartName##_parent_ODPart_ReleaseAll(somSelf,ev); \
  865.         FW_CODPart::ReleaseAll(ev, somSelf->GetFrameworkPart(ev)); \
  866.         FW_ABANDON_EXTENSIONS \
  867.     } \
  868.     FW_CATCH_BEGIN \
  869.     FW_CATCH_REFERENCE(FW_XException, exception) \
  870.     { \
  871.         FW_SetException(ev, exception); \
  872.     } \
  873.     FW_CATCH_END \
  874. } \
  875.  \
  876. /*---------------------------------------------------------------------------------------- \
  877.     HasExtension \
  878. ----------------------------------------------------------------------------------------*/ \
  879.  \
  880. SOM_Scope ODBoolean  SOMLINK PartName##HasExtension(ModuleName##_##PartName *somSelf, \
  881.                                                     Environment *ev, \
  882.                                                     ODType extensionName) \
  883. { \
  884.     ODBoolean result = FALSE; \
  885.     \
  886.     FW_TRY \
  887.     { \
  888.         FW_HAS_EXTENSION \
  889.         if (!result)  \
  890.             result = ModuleName##_##PartName##_parent_ODPart_HasExtension(somSelf, ev, extensionName);  \
  891.     } \
  892.     FW_CATCH_BEGIN \
  893.     FW_CATCH_REFERENCE(FW_XException, exception) \
  894.     { \
  895.         FW_SetException(ev, exception); \
  896.     } \
  897.     FW_CATCH_END \
  898.     \
  899.     return result; \
  900. } \
  901.  \
  902. /*---------------------------------------------------------------------------------------- \
  903.     AcquireExtension \
  904. ----------------------------------------------------------------------------------------*/ \
  905.  \
  906. SOM_Scope ODExtension*  SOMLINK PartName##AcquireExtension(ModuleName##_##PartName *somSelf, Environment *ev, \
  907.         ODType extensionName) \
  908. { \
  909.     ODExtension* extension = NULL; \
  910.     \
  911.     FW_TRY \
  912.     { \
  913.         FW_ACQUIRE_EXTENSION \
  914.         if (!extension) \
  915.             extension = ModuleName##_##PartName##_parent_ODPart_AcquireExtension(somSelf, ev, extensionName); \
  916.     } \
  917.     FW_CATCH_BEGIN \
  918.     FW_CATCH_REFERENCE(FW_XException, exception) \
  919.     { \
  920.         FW_SetException(ev, exception); \
  921.     } \
  922.     FW_CATCH_END \
  923.     \
  924.     return extension; \
  925. } \
  926.  \
  927. /*---------------------------------------------------------------------------------------- \
  928.     ReleaseExtension \
  929. ----------------------------------------------------------------------------------------*/ \
  930.  \
  931. SOM_Scope void  SOMLINK PartName##ReleaseExtension(ModuleName##_##PartName *somSelf, Environment *ev, \
  932.         ODExtension* extension) \
  933. { \
  934.     ODBoolean released = false; \
  935.     \
  936.     FW_TRY \
  937.     { \
  938.         FW_RELEASE_EXTENSION \
  939.         if (!released) \
  940.             ModuleName##_##PartName##_parent_ODPart_ReleaseExtension(somSelf, ev, extension); \
  941.     } \
  942.     FW_CATCH_BEGIN \
  943.     FW_CATCH_REFERENCE(FW_XException, exception) \
  944.     { \
  945.         FW_SetException(ev, exception); \
  946.     } \
  947.     FW_CATCH_END \
  948. } \
  949.  \
  950. /*---------------------------------------------------------------------------------------- \
  951.     Purge \
  952. ----------------------------------------------------------------------------------------*/ \
  953.  \
  954. SOM_Scope ODSize  SOMLINK PartName##Purge(ModuleName##_##PartName *somSelf, Environment *ev, \
  955.         ODSize size) \
  956. { \
  957.     ODSize bytesRecovered; \
  958.     \
  959.     FW_TRY \
  960.     { \
  961.         FW_PURGE_EXTENSIONS \
  962.         bytesRecovered = FW_CODPart::Purge(ev, somSelf->GetFrameworkPart(ev), size); \
  963.     } \
  964.     FW_CATCH_BEGIN \
  965.     FW_CATCH_REFERENCE(FW_XException, exception) \
  966.     { \
  967.         FW_SetException(ev, exception); \
  968.     } \
  969.     FW_CATCH_END \
  970.     \
  971.     return bytesRecovered; \
  972. } \
  973. \
  974.  
  975. //========================================================================================
  976. // FW_CONTAINER_PART_API macro
  977. //========================================================================================
  978.  
  979.  
  980. #if FW_SUPPORTS_EMBEDDING
  981.  
  982. // ======== Non-EmbeddingPart =========
  983.  
  984. #define FW_CONTAINER_PART_API(ModuleName, PartName, PartClass) \
  985. /*---------------------------------------------------------------------------------------- \
  986.     AdjustBorderShape \
  987. ----------------------------------------------------------------------------------------*/ \
  988.  \
  989. SOM_Scope ODShape*  SOMLINK PartName##AdjustBorderShape(ModuleName##_##PartName *somSelf, Environment * ev, \
  990.         ODFacet* embeddedFacet, \
  991.         ODShape* shape) \
  992. { \
  993.     return FW_CODPart::AdjustBorderShape(ev, embeddedFacet, shape); \
  994. } \
  995.  \
  996. /*---------------------------------------------------------------------------------------- \
  997.     EmbeddedFrameUpdated \
  998. ----------------------------------------------------------------------------------------*/ \
  999.  \
  1000. SOM_Scope void  SOMLINK PartName##EmbeddedFrameUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  1001.         ODFrame* frame, \
  1002.         ODUpdateID updateID) \
  1003. { \
  1004.     FW_CODPart::EmbeddedFrameUpdated(ev, somSelf->GetFrameworkPart(ev), frame, updateID); \
  1005. } \
  1006.  \
  1007. /*---------------------------------------------------------------------------------------- \
  1008.     UsedShapeChanged \
  1009. ----------------------------------------------------------------------------------------*/ \
  1010.  \
  1011. SOM_Scope void  SOMLINK PartName##UsedShapeChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  1012.         ODFrame* embeddedFrame) \
  1013. { \
  1014.     FW_CODPart::UsedShapeChanged(ev, embeddedFrame); \
  1015. } \
  1016.  \
  1017. /*---------------------------------------------------------------------------------------- \
  1018.     RevealFrame \
  1019. ----------------------------------------------------------------------------------------*/ \
  1020.  \
  1021. SOM_Scope ODBoolean  SOMLINK PartName##RevealFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1022.         ODFrame* embeddedFrame, \
  1023.         ODShape* revealShape) \
  1024. { \
  1025.     return FW_CODPart::RevealFrame(ev, embeddedFrame, revealShape); \
  1026. } \
  1027.  \
  1028. /*---------------------------------------------------------------------------------------- \
  1029.     CreateEmbeddedFramesIterator \
  1030. ----------------------------------------------------------------------------------------*/ \
  1031.  \
  1032. SOM_Scope ODEmbeddedFramesIterator*  SOMLINK PartName##CreateEmbeddedFramesIterator(ModuleName##_##PartName *somSelf, Environment *ev, \
  1033.         ODFrame* frame) \
  1034. { \
  1035.     FW_CEmbeddingFrame* fwFrame = NULL;\
  1036.     ModuleName##_##PartName##EmbeddedFramesIterator* iter = NULL; \
  1037.     FW_VOLATILE(iter); \
  1038. \
  1039.     FW_TRY \
  1040.     { \
  1041.         if (frame != NULL)\
  1042.         {\
  1043.             fwFrame = FW_CEmbeddingFrame::ODtoFWEmbeddingFrame(ev, frame);\
  1044.             FW_ASSERT(fwFrame);\
  1045.         }\
  1046.         \
  1047.         iter = new ModuleName##_##PartName##EmbeddedFramesIterator;\
  1048.         iter->InitIterator(ev, (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), fwFrame);\
  1049.     } \
  1050.     FW_CATCH_BEGIN \
  1051.     FW_CATCH_REFERENCE(FW_XException, exception) \
  1052.     { \
  1053.         delete iter; \
  1054.         iter = NULL; \
  1055.         FW_SetException(ev, exception); \
  1056.     } \
  1057.     FW_CATCH_END \
  1058.     \
  1059.     return iter; \
  1060. } \
  1061.  \
  1062. /*---------------------------------------------------------------------------------------- \
  1063.     RequestEmbeddedFrame \
  1064. ----------------------------------------------------------------------------------------*/ \
  1065.  \
  1066. SOM_Scope ODFrame*  SOMLINK PartName##RequestEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1067.         ODFrame* containingFrame, \
  1068.         ODFrame* baseFrame, \
  1069.         ODShape* frameShape, \
  1070.         ODPart* embeddedPart, \
  1071.         ODTypeToken viewType, \
  1072.         ODTypeToken presentation, \
  1073.         ODBoolean isOverlaid) \
  1074. { \
  1075.     return FW_CODPart::RequestEmbeddedFrame(ev,  \
  1076.                                             (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1077.                                             containingFrame, \
  1078.                                             baseFrame, \
  1079.                                             frameShape, \
  1080.                                             embeddedPart, \
  1081.                                             viewType, \
  1082.                                             presentation, \
  1083.                                             isOverlaid); \
  1084. } \
  1085.  \
  1086. /*---------------------------------------------------------------------------------------- \
  1087.     RemoveEmbeddedFrame \
  1088. ----------------------------------------------------------------------------------------*/ \
  1089.  \
  1090. SOM_Scope void  SOMLINK PartName##RemoveEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1091.         ODFrame* embeddedFrame) \
  1092. { \
  1093.     FW_CODPart::RemoveEmbeddedFrame(ev, \
  1094.                                     (FW_CEmbeddingPart*)somSelf->GetFrameworkPart(ev), \
  1095.                                     embeddedFrame); \
  1096. } \
  1097.  \
  1098. /*---------------------------------------------------------------------------------------- \
  1099.     RequestFrameShape \
  1100. ----------------------------------------------------------------------------------------*/ \
  1101.  \
  1102. SOM_Scope ODShape*  SOMLINK PartName##RequestFrameShape(ModuleName##_##PartName *somSelf, Environment *ev, \
  1103.         ODFrame* embeddedFrame, \
  1104.         ODShape* frameShape) \
  1105. { \
  1106.     return FW_CODPart::RequestFrameShape(ev, embeddedFrame, frameShape); \
  1107. }
  1108.  
  1109. #else
  1110.  
  1111. // ======== Non-EmbeddingPart =========
  1112.  
  1113. #define FW_CONTAINER_PART_API(ModuleName, PartName, PartClass) \
  1114. /*---------------------------------------------------------------------------------------- \
  1115.     AdjustBorderShape \
  1116. ----------------------------------------------------------------------------------------*/ \
  1117.  \
  1118. SOM_Scope ODShape*  SOMLINK PartName##AdjustBorderShape(ModuleName##_##PartName *somSelf, Environment * ev, \
  1119.         ODFacet* embeddedFacet, \
  1120.         ODShape* shape) \
  1121. { \
  1122.     FW_DEBUG_MESSAGE("AdjustBorderShape: Error, this part editor does not support embedding"); \
  1123.     if (shape != NULL) \
  1124.         shape->Acquire(ev); \
  1125.     return shape; \
  1126. } \
  1127.  \
  1128. /*---------------------------------------------------------------------------------------- \
  1129.     EmbeddedFrameUpdated \
  1130. ----------------------------------------------------------------------------------------*/ \
  1131.  \
  1132. SOM_Scope void  SOMLINK PartName##EmbeddedFrameUpdated(ModuleName##_##PartName *somSelf, Environment *ev, \
  1133.         ODFrame* frame, \
  1134.         ODUpdateID updateID) \
  1135. { \
  1136.     FW_DEBUG_MESSAGE("EmbeddedFrameUpdated: Error, this part editor does not support embedding"); \
  1137. } \
  1138.  \
  1139. /*---------------------------------------------------------------------------------------- \
  1140.     UsedShapeChanged \
  1141. ----------------------------------------------------------------------------------------*/ \
  1142.  \
  1143. SOM_Scope void  SOMLINK PartName##UsedShapeChanged(ModuleName##_##PartName *somSelf, Environment *ev, \
  1144.         ODFrame* embeddedFrame) \
  1145. { \
  1146.     FW_DEBUG_MESSAGE("UsedShapeChanged: Error, this part editor does not support embedding"); \
  1147. } \
  1148.  \
  1149. /*---------------------------------------------------------------------------------------- \
  1150.     RevealFrame \
  1151. ----------------------------------------------------------------------------------------*/ \
  1152.  \
  1153. SOM_Scope ODBoolean  SOMLINK PartName##RevealFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1154.         ODFrame* embeddedFrame, \
  1155.         ODShape* revealShape) \
  1156. { \
  1157.     FW_DEBUG_MESSAGE("RevealFrame: Error, this part editor does not support embedding"); \
  1158.     return FALSE; \
  1159. } \
  1160.  \
  1161. /*---------------------------------------------------------------------------------------- \
  1162.     CreateEmbeddedFramesIterator \
  1163. ----------------------------------------------------------------------------------------*/ \
  1164.  \
  1165. SOM_Scope ODEmbeddedFramesIterator*  SOMLINK PartName##CreateEmbeddedFramesIterator(ModuleName##_##PartName *somSelf, Environment *ev, \
  1166.         ODFrame* frame) \
  1167. { \
  1168.     FW_SetEvError(ev, kODErrCannotEmbed); \
  1169.     return NULL; \
  1170. } \
  1171.  \
  1172. /*---------------------------------------------------------------------------------------- \
  1173.     RequestEmbeddedFrame \
  1174. ----------------------------------------------------------------------------------------*/ \
  1175.  \
  1176. SOM_Scope ODFrame*  SOMLINK PartName##RequestEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1177.         ODFrame* containingFrame, \
  1178.         ODFrame* baseFrame, \
  1179.         ODShape* frameShape, \
  1180.         ODPart* embeddedPart, \
  1181.         ODTypeToken viewType, \
  1182.         ODTypeToken presentation, \
  1183.         ODBoolean isOverlaid) \
  1184. { \
  1185.     FW_DEBUG_MESSAGE("RequestEmbeddedFrame: Error, this part editor does not support embedding"); \
  1186.     return NULL; \
  1187. } \
  1188.  \
  1189. /*---------------------------------------------------------------------------------------- \
  1190.     RemoveEmbeddedFrame \
  1191. ----------------------------------------------------------------------------------------*/ \
  1192.  \
  1193. SOM_Scope void  SOMLINK PartName##RemoveEmbeddedFrame(ModuleName##_##PartName *somSelf, Environment *ev, \
  1194.         ODFrame* embeddedFrame) \
  1195. { \
  1196.     FW_DEBUG_MESSAGE("RemoveEmbeddedFrame: Error, this part editor does not support embedding"); \
  1197. } \
  1198.  \
  1199. /*---------------------------------------------------------------------------------------- \
  1200.     RequestFrameShape \
  1201. ----------------------------------------------------------------------------------------*/ \
  1202.  \
  1203. SOM_Scope ODShape*  SOMLINK PartName##RequestFrameShape(ModuleName##_##PartName *somSelf, Environment *ev, \
  1204.         ODFrame* embeddedFrame, \
  1205.         ODShape* frameShape) \
  1206. { \
  1207.     FW_DEBUG_MESSAGE("RequestFrameShape: Error, this part editor does not support embedding"); \
  1208.     frameShape->Acquire(ev); \
  1209.     return frameShape; \
  1210. }
  1211.  
  1212. #endif